package com.example.blog.util.Web;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class WebTest {
    public static String replaceWebsiteTitles(String text) {
        // 改进的正则表达式，匹配各种形式的 URL，包括带端口号的 URL
        String regex = "(https?://)?(www\\.)?([\\w-]+\\.)+[\\w]+(:\\d+)?(/[\\w-./?%&=]*)?";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(text);

        StringBuffer replacedText = new StringBuffer();
        while (matcher.find()) {
            String websiteUrl = matcher.group();

            // 确保网址以 "http://" 或 "https://" 开头
            if (!websiteUrl.startsWith("http://") && !websiteUrl.startsWith("https://")) {
                websiteUrl = "http://" + websiteUrl;
            }

            String websiteTitle = getWebsiteTitle(websiteUrl, 3000); // 3秒超时时间

            // 如果无法获取到标题，则保留原始的网站链接
            if (websiteTitle.isEmpty()) {
                websiteTitle = "\"" + websiteUrl + "\"";
            } else {
                websiteTitle = "\"" + websiteTitle + " (" + websiteUrl + ")\"";
            }

            // 替换网站标题到文本中
            matcher.appendReplacement(replacedText, websiteTitle);
        }
        matcher.appendTail(replacedText);

        return replacedText.toString();
    }

    public static synchronized String getWebsiteTitle(String url, int timeoutMillis) {
        String title = "";
        try {
            Document doc = Jsoup.connect(url).timeout(timeoutMillis).get();
            // 确保 Jsoup 使用正确的编码
            doc.outputSettings().charset("UTF-8");
            title = doc.title();
        } catch (IOException e) {
            // 捕获超时和其他IO异常
            e.printStackTrace();
        }
        return title;
    }

    public static void main(String[] args) {
        String text = "访问我们的网站 http://www.example.com 了解更多信息。";
        String result = replaceWebsiteTitles(text);
        System.out.println(result);
    }
}



